'use strict'
/**
 * DataUtil
 * 通用数据处理工具类
 * 你是一段成熟的代码，要学会自己改bug  ----我是小尾巴
 */

/**
 * 获取地址栏参数值
 * @param param
 * @return {*}
 */
export function getQueryByName (param) {
  let reg = new RegExp('(^|&)' + param + '=([^&]*)(&|$)')
  let r = window.location.search.substr(1).match(reg)
  if (r != null) { return decodeURI(r[2]) }
  return null
}

/**
 * 去除文本的html标签
 * @param content
 */
export function removeHtmlTag (content) {
  return content.replace(/<[^>]+>/g, '').replace(/\n/g, '')
}

/**
 * 随机打乱数组
 * @param array
 */
export function randArray (array) {
  const arr = [...array]
  for (let j, x, i = this.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x) {}
  return arr
}

/**
 * 计算文件大小
 * @param value
 * @param unit
 * @param finalUnit
 * @returns {string}
 */
export function calculateStorageSpace (value = 0, unit = 'Byte', finalUnit) {
  const unitArray = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB']
  let index = unitArray.findIndex(item => item.toLowerCase() === unit.toLowerCase())
  if (index < 0) {
    index = 0
  }
  while (value > 1024) {
    value /= 1024
    index++
  }
  if (index > 0) {
    value = value.toFixed(2)
  }
  return value + unitArray[index]
}

/**
 * 数组数据逐项累加
 * @param array
 * @returns {Array}
 */
export function summation (array = []) {
  const newArray = []
  array.forEach((item, index) => {
    if (index !== 0) {
      newArray.push(newArray[index - 1] + item)
    } else {
      newArray.push(item)
    }
  })
  return newArray
}

/**
 * 判断是否是其中一个
 * @param value
 * @param validList
 * @returns {boolean}
 */
export function oneOf (value, validList) {
  return validList.includes(value)
}
